package cn.com.surker.system.controller;

import cn.com.surker.spring.RestResultDto;
import cn.com.surker.system.entity.SysMenuInfo;
import cn.com.surker.system.service.MenuInfoService;
import cn.com.surker.system.service.RoleService;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;

/**
* <p>
    * 菜单表 前端控制器
    * </p>
*
* @author lucky
* @since 2021-02-24
*/

@RestController
@RequestMapping("/sys_menu")
public class SysMenuInfoController {

    /**菜单业务类**/
    @Resource
    private MenuInfoService serviceImpl;

    /**菜单角色业务类**/
    @Resource
    private RoleService roleService;

    /**
    *  分页查询列表
    **/
    @RequestMapping(value = "/list", method = RequestMethod.POST)
    @ResponseBody
    public RestResultDto findAll(SysMenuInfo dto, Integer offset, Integer limit){
        IPage iPage = serviceImpl.findByPage(dto.getName(), dto.getType(), offset, limit);
        return RestResultDto.success(iPage);
    }
//
//    /**
//     * 菜单关联按钮
//     * @param mid   菜单ID
//     * @param bid 按钮ID
//     * @param uid 用户ID
//     * @return
//     */
//    @RequestMapping(value = "/add/relation/{uid}", method = RequestMethod.PUT)
//    @ResponseBody
//    public RestResultDto addRelationOrigin(@PathVariable Long uid, Long bid, Long mid) {
//
//        return serviceImpl.saveRelationButton(uid, bid, mid);
//    }
//
//    /**
//     * 用户删除关联部门
//     * @param mid   菜单ID
//     * @param bid 按钮ID
//     * @param uid 用户ID
//     * @return
//     */
//    @RequestMapping(value = "/delete/relation/{uid}", method = RequestMethod.PUT)
//    @ResponseBody
//    public RestResultDto deleteRelationOrigin(@PathVariable Long uid, Long bid, Long mid) {
//
//        return serviceImpl.deleteRelationButton(uid, bid, mid);
//    }
//
//    /**
//     * 查询所有菜单
//     * @param uid 用户ID
//     * @param mid 菜单
//     * @return
//     */
//    @RequestMapping(value = "/query/button", method = RequestMethod.POST)
//    @ResponseBody
//    public RestResultDto queryMenu(Long uid, Long mid) {
//
//        return serviceImpl.queryButton(uid, mid);
//    }
//
    /**
    *  新增数据
    **/
    @RequestMapping(value = "/save", method = RequestMethod.PUT)
    @ResponseBody
    public RestResultDto save(SysMenuInfo dto){
        try {
            return RestResultDto.complete(serviceImpl.saveInit(dto));
        } catch (Exception e) {
            e.printStackTrace();
            return RestResultDto.fail("系统异常,更新数据失败");
        }
    }

    /**
     * 修改菜单
     * @param dto
     * @return
     */
    @RequestMapping(value = "/update/{id}", method = RequestMethod.PUT)
    @ResponseBody
    public RestResultDto update(@PathVariable Long id, SysMenuInfo dto) {
        try {
            return RestResultDto.complete(serviceImpl.update(dto));
        } catch (Exception e) {
            e.printStackTrace();
            return RestResultDto.fail("系统异常,更新数据失败");
        }
    }
//
//
//    /**
//     *  分页查询列表
//     **/
//    @RequestMapping(value = "/role/list", method = RequestMethod.POST)
//    @ResponseBody
//    public RestResultDto findAll(@RequestBody SysMenuRole dto, Integer offset, Integer limit){
//        try {
//            return roleService.findAllByPage(dto, offset, limit);
//        } catch (Exception e) {
//            e.printStackTrace();
//            return RestResultDto.fail("系统异常,加载数据失败");
//        }
//    }
//
//    /**
//     *  新增数据
//     **/
//    @RequestMapping(value = "/role/save", method = RequestMethod.PUT)
//    @ResponseBody
//    public RestResultDto save(SysMenuRole dto){
//        try {
//            return roleService.saveInit(dto);
//        } catch (Exception e) {
//            e.printStackTrace();
//            return RestResultDto.fail("系统异常,添加数据失败");
//        }
//    }
//
//
//    /**
//     * 修改菜单角色
//     * @param dto
//     * @return
//     */
//    @RequestMapping(value = "/role/update", method = RequestMethod.PUT)
//    @ResponseBody
//    public RestResultDto update(SysMenuRole dto) {
//        try {
//            return roleService.update(dto);
//        } catch (Exception e) {
//            e.printStackTrace();
//            return RestResultDto.fail("系统异常,更新数据失败");
//        }
//    }
//
    /**
     * 启用菜单
     * @param id
     * @return
     */
    @RequestMapping(value = "/enabled/{id}", method = RequestMethod.PUT)
    @ResponseBody
    public RestResultDto enabled(@PathVariable Long id) {
        try {
            return RestResultDto.complete(serviceImpl.enabled(id));
        } catch (Exception e) {
            e.printStackTrace();
            return RestResultDto.fail("系统异常,更新数据失败");
        }
    }

    /**
     * 禁用菜单
     * @param id
     * @return
     */
    @RequestMapping(value = "/delete/{id}", method = RequestMethod.PUT)
    @ResponseBody
    public RestResultDto delete(@PathVariable Long id) {
        try {
            return RestResultDto.complete(serviceImpl.delete(id));
        } catch (Exception e) {
            e.printStackTrace();
            return RestResultDto.fail("系统异常,更新数据失败");
        }
    }

}



